﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Agresso.Interface.Layer.Gateway;
using Agresso.Interface.Layer.Domain;
using System.Data.SqlClient;
using Agresso.Interface.Layer.SQL;
using System.Data;

namespace Agresso.Interface.Layer.Service
{
    public class AlgBatcInputService
    {
        DataBaseConnectivity m_dataBaseConectivity;
        public AlgBatcInputService()
        {
            m_dataBaseConectivity = new DataBaseConnectivity();
        }
        public void Insert(algbatchinput abi)
        {
            try
            {
                m_dataBaseConectivity.AgrTempConnectionSQLConnection.Open();
                SqlCommand cmd = new SqlCommand(AlgBatchInputSQL.Insert(), m_dataBaseConectivity.AgrTempConnectionSQLConnection);
                cmd.Parameters.Add("@account", SqlDbType.NVarChar).Value = abi.account;
                cmd.Parameters.Add("@accountable", SqlDbType.NVarChar).Value = abi.accountable;
                cmd.Parameters.Add("@address", SqlDbType.NVarChar).Value = abi.address;
                cmd.Parameters.Add("@allocation_key", SqlDbType.Int).Value = abi.allocation_key;
                cmd.Parameters.Add("@amount", SqlDbType.Decimal).Value = abi.amount;
                cmd.Parameters.Add("@amount_set", SqlDbType.Int).Value = abi.amount_set;
                cmd.Parameters.Add("@apar_id", SqlDbType.NVarChar).Value = abi.apar_id;
                cmd.Parameters.Add("@apar_id_ref", SqlDbType.NVarChar).Value = abi.apar_id_ref;
                cmd.Parameters.Add("@apar_name", SqlDbType.NVarChar).Value = abi.apar_name;
                cmd.Parameters.Add("@art_descr", SqlDbType.NVarChar).Value = abi.art_descr;
                cmd.Parameters.Add("@article", SqlDbType.NVarChar).Value = abi.article;
                cmd.Parameters.Add("@att_1_id", SqlDbType.NVarChar).Value = abi.att_1_id;
                cmd.Parameters.Add("@att_2_id", SqlDbType.NVarChar).Value = abi.att_2_id;
                cmd.Parameters.Add("@att_3_id", SqlDbType.NVarChar).Value = abi.att_3_id;
                cmd.Parameters.Add("@att_4_id", SqlDbType.NVarChar).Value = abi.att_4_id;
                cmd.Parameters.Add("@att_5_id", SqlDbType.NVarChar).Value = abi.att_5_id;
                cmd.Parameters.Add("@att_6_id", SqlDbType.NVarChar).Value = abi.att_6_id;
                cmd.Parameters.Add("@att_7_id", SqlDbType.NVarChar).Value = abi.att_7_id;
                cmd.Parameters.Add("@bank_account", SqlDbType.NVarChar).Value = abi.bank_account;
                cmd.Parameters.Add("@batch_id", SqlDbType.NVarChar).Value = abi.batch_id;
                cmd.Parameters.Add("@clearing_code", SqlDbType.NVarChar).Value = abi.clearing_code;
                cmd.Parameters.Add("@client", SqlDbType.NVarChar).Value = abi.client;
                cmd.Parameters.Add("@client_ref", SqlDbType.NVarChar).Value = abi.client_ref;
                cmd.Parameters.Add("@confirm_date", SqlDbType.DateTime).Value = abi.confirm_date;
                cmd.Parameters.Add("@contract_id", SqlDbType.NVarChar).Value = abi.contract_id;
                cmd.Parameters.Add("@control", SqlDbType.NVarChar).Value = abi.control;
                cmd.Parameters.Add("@cur_amount", SqlDbType.Decimal).Value = abi.cur_amount;
                cmd.Parameters.Add("@currency", SqlDbType.NVarChar).Value = abi.currency;
                cmd.Parameters.Add("@del_met_descr", SqlDbType.NVarChar).Value = abi.del_met_descr;
                cmd.Parameters.Add("@del_term_descr", SqlDbType.NVarChar).Value = abi.del_term_descr;
                cmd.Parameters.Add("@deliv_addr", SqlDbType.NVarChar).Value = abi.deliv_addr;
                cmd.Parameters.Add("@deliv_attention", SqlDbType.NVarChar).Value = abi.deliv_attention;
                cmd.Parameters.Add("@deliv_countr", SqlDbType.NVarChar).Value = abi.deliv_countr;
                cmd.Parameters.Add("@deliv_date", SqlDbType.DateTime).Value = abi.deliv_date;
                cmd.Parameters.Add("@deliv_method", SqlDbType.NVarChar).Value = abi.deliv_method;
                cmd.Parameters.Add("@deliv_terms", SqlDbType.NVarChar).Value = abi.deliv_terms;
                cmd.Parameters.Add("@delivery_descr", SqlDbType.NVarChar).Value = abi.delivery_descr;
                cmd.Parameters.Add("@dim_1", SqlDbType.NVarChar).Value = abi.dim_1;
                cmd.Parameters.Add("@dim_2", SqlDbType.NVarChar).Value = abi.dim_2;
                cmd.Parameters.Add("@dim_3", SqlDbType.NVarChar).Value = abi.dim_3;
                cmd.Parameters.Add("@dim_4", SqlDbType.NVarChar).Value = abi.dim_4;
                cmd.Parameters.Add("@dim_5", SqlDbType.NVarChar).Value = abi.dim_5;
                cmd.Parameters.Add("@dim_6", SqlDbType.NVarChar).Value = abi.dim_6;
                cmd.Parameters.Add("@dim_7", SqlDbType.NVarChar).Value = abi.dim_7;
                cmd.Parameters.Add("@dim_value_1", SqlDbType.NVarChar).Value = abi.dim_value_1;
                cmd.Parameters.Add("@dim_value_2", SqlDbType.NVarChar).Value = abi.dim_value_2;
                cmd.Parameters.Add("@dim_value_3", SqlDbType.NVarChar).Value = abi.dim_value_3;
                cmd.Parameters.Add("@dim_value_4", SqlDbType.NVarChar).Value = abi.dim_value_4;
                cmd.Parameters.Add("@dim_value_5", SqlDbType.NVarChar).Value = abi.dim_value_5;
                cmd.Parameters.Add("@dim_value_6", SqlDbType.NVarChar).Value = abi.dim_value_6;
                cmd.Parameters.Add("@dim_value_7", SqlDbType.NVarChar).Value = abi.dim_value_7;
                cmd.Parameters.Add("@disc_percent", SqlDbType.Decimal).Value = abi.disc_percent;
                cmd.Parameters.Add("@discount", SqlDbType.Decimal).Value = abi.discount;
                cmd.Parameters.Add("@ean", SqlDbType.NVarChar).Value = abi.ean;
                cmd.Parameters.Add("@exch_rate", SqlDbType.Decimal).Value = abi.exch_rate;
                cmd.Parameters.Add("@ext_ord_ref", SqlDbType.NVarChar).Value = abi.ext_ord_ref;
                cmd.Parameters.Add("@ext_order_id", SqlDbType.NVarChar).Value = abi.ext_order_id;
                cmd.Parameters.Add("@intrule_id", SqlDbType.NVarChar).Value = abi.intrule_id;
                cmd.Parameters.Add("@line_no", SqlDbType.Int).Value = abi.line_no;
                cmd.Parameters.Add("@location", SqlDbType.NVarChar).Value = abi.location;
                cmd.Parameters.Add("@long_info1", SqlDbType.NVarChar).Value = abi.long_info1;
                cmd.Parameters.Add("@long_info2", SqlDbType.NVarChar).Value = abi.long_info2;
                cmd.Parameters.Add("@lot", SqlDbType.NVarChar).Value = abi.lot;
                cmd.Parameters.Add("@main_apar_id", SqlDbType.NVarChar).Value = abi.main_apar_id;
                cmd.Parameters.Add("@mark_attention", SqlDbType.NVarChar).Value = abi.mark_attention;
                cmd.Parameters.Add("@markings", SqlDbType.NVarChar).Value = abi.markings;
                cmd.Parameters.Add("@obs_date", SqlDbType.DateTime).Value = abi.obs_date;
                cmd.Parameters.Add("@order_date", SqlDbType.DateTime).Value = abi.order_date;
                cmd.Parameters.Add("@order_id", SqlDbType.BigInt).Value = abi.order_id;
                cmd.Parameters.Add("@order_type", SqlDbType.NVarChar).Value = abi.order_type;
                cmd.Parameters.Add("@pay_method", SqlDbType.NVarChar).Value = abi.pay_method;
                cmd.Parameters.Add("@pay_temp_id", SqlDbType.NVarChar).Value = abi.pay_temp_id;
                cmd.Parameters.Add("@period", SqlDbType.Int).Value = abi.period;
                cmd.Parameters.Add("@place", SqlDbType.NVarChar).Value = abi.place;
                cmd.Parameters.Add("@province", SqlDbType.NVarChar).Value = abi.province;
                cmd.Parameters.Add("@rel_value", SqlDbType.NVarChar).Value = abi.rel_value;
                cmd.Parameters.Add("@rent_flag", SqlDbType.Int).Value = abi.rent_flag;
                cmd.Parameters.Add("@responsible", SqlDbType.NVarChar).Value = abi.responsible;
                cmd.Parameters.Add("@responsible2", SqlDbType.NVarChar).Value = abi.responsible2;
                cmd.Parameters.Add("@sequence_no", SqlDbType.Int).Value = abi.sequence_no;
                cmd.Parameters.Add("@sequence_ref", SqlDbType.Int).Value = abi.sequence_ref;
                cmd.Parameters.Add("@serial_no", SqlDbType.NVarChar).Value = abi.serial_no;
                cmd.Parameters.Add("@short_info", SqlDbType.NVarChar).Value = abi.short_info;
                cmd.Parameters.Add("@status", SqlDbType.NVarChar).Value = abi.status;
                cmd.Parameters.Add("@sup_article", SqlDbType.NVarChar).Value = abi.sup_article;
                cmd.Parameters.Add("@swift", SqlDbType.NVarChar).Value = abi.swift;
                cmd.Parameters.Add("@tax_code", SqlDbType.NVarChar).Value = abi.tax_code;
                cmd.Parameters.Add("@tax_system", SqlDbType.NVarChar).Value = abi.tax_system;
                cmd.Parameters.Add("@template_id", SqlDbType.Int).Value = abi.template_id;
                cmd.Parameters.Add("@terms_descr", SqlDbType.NVarChar).Value = abi.terms_descr;
                cmd.Parameters.Add("@terms_id", SqlDbType.NVarChar).Value = abi.terms_id;
                cmd.Parameters.Add("@text1", SqlDbType.NVarChar).Value = abi.text1;
                cmd.Parameters.Add("@text2", SqlDbType.NVarChar).Value = abi.text2;
                cmd.Parameters.Add("@text3", SqlDbType.NVarChar).Value = abi.text3;
                cmd.Parameters.Add("@text4", SqlDbType.NVarChar).Value = abi.text4;
                cmd.Parameters.Add("@trans_type", SqlDbType.NVarChar).Value = abi.trans_type;
                cmd.Parameters.Add("@unit_code", SqlDbType.NVarChar).Value = abi.unit_code;
                cmd.Parameters.Add("@unit_descr", SqlDbType.NVarChar).Value = abi.unit_descr;
                cmd.Parameters.Add("@unit_price", SqlDbType.Decimal).Value = abi.unit_price;
                cmd.Parameters.Add("@value_1", SqlDbType.Decimal).Value = abi.value_1;
                cmd.Parameters.Add("@vat_reg_no", SqlDbType.NVarChar).Value = abi.vat_reg_no;
                cmd.Parameters.Add("@voucher_ref", SqlDbType.Int).Value = abi.voucher_ref;
                cmd.Parameters.Add("@voucher_type", SqlDbType.NVarChar).Value = abi.voucher_type;
                cmd.Parameters.Add("@warehouse", SqlDbType.NVarChar).Value = abi.warehouse;
                cmd.Parameters.Add("@wf_state", SqlDbType.NVarChar).Value = abi.wf_state;
                cmd.Parameters.Add("@zip_code", SqlDbType.NVarChar).Value = abi.zip_code;

                LogService.WriteLogExecuteSQLCommand(cmd);
                cmd.ExecuteNonQuery();

                cmd.CommandText = AlgBatchInputSQL.GetMaxAgrtIDAcrBatchInputSQL();
                cmd.Parameters.Clear();
                abi.agrtid = Convert.ToInt32(cmd.ExecuteScalar());
            }
            catch (Exception x)
            {
                LogService.WriteLogException(x);
                throw x;
            }
            finally
            {
                m_dataBaseConectivity.AgrTempConnectionSQLConnection.Close();
            }

        }
        public void InsertToInterfaceTable(algbatchinput abi)
        {
            try
            {
                m_dataBaseConectivity.InterfaceSqlConnection.Open();
                SqlCommand cmd = new SqlCommand(AlgBatchInputSQL.InsertAlgBatchInputInterfaceSQL(), m_dataBaseConectivity.InterfaceSqlConnection);
                cmd.Parameters.Add("@account", SqlDbType.NVarChar).Value = abi.account;
                cmd.Parameters.Add("@accountable", SqlDbType.NVarChar).Value = abi.accountable;
                cmd.Parameters.Add("@address", SqlDbType.NVarChar).Value = abi.address;
                cmd.Parameters.Add("@allocation_key", SqlDbType.Int).Value = abi.allocation_key;
                cmd.Parameters.Add("@amount", SqlDbType.Decimal).Value = abi.amount;
                cmd.Parameters.Add("@amount_set", SqlDbType.Int).Value = abi.amount_set;
                cmd.Parameters.Add("@apar_id", SqlDbType.NVarChar).Value = abi.apar_id;
                cmd.Parameters.Add("@apar_id_ref", SqlDbType.NVarChar).Value = abi.apar_id_ref;
                cmd.Parameters.Add("@apar_name", SqlDbType.NVarChar).Value = abi.apar_name;
                cmd.Parameters.Add("@art_descr", SqlDbType.NVarChar).Value = abi.art_descr;
                cmd.Parameters.Add("@article", SqlDbType.NVarChar).Value = abi.article;
                cmd.Parameters.Add("@att_1_id", SqlDbType.NVarChar).Value = abi.att_1_id;
                cmd.Parameters.Add("@att_2_id", SqlDbType.NVarChar).Value = abi.att_2_id;
                cmd.Parameters.Add("@att_3_id", SqlDbType.NVarChar).Value = abi.att_3_id;
                cmd.Parameters.Add("@att_4_id", SqlDbType.NVarChar).Value = abi.att_4_id;
                cmd.Parameters.Add("@att_5_id", SqlDbType.NVarChar).Value = abi.att_5_id;
                cmd.Parameters.Add("@att_6_id", SqlDbType.NVarChar).Value = abi.att_6_id;
                cmd.Parameters.Add("@att_7_id", SqlDbType.NVarChar).Value = abi.att_7_id;
                cmd.Parameters.Add("@bank_account", SqlDbType.NVarChar).Value = abi.bank_account;
                cmd.Parameters.Add("@batch_id", SqlDbType.NVarChar).Value = abi.batch_id;
                cmd.Parameters.Add("@clearing_code", SqlDbType.NVarChar).Value = abi.clearing_code;
                cmd.Parameters.Add("@client", SqlDbType.NVarChar).Value = abi.client;
                cmd.Parameters.Add("@client_ref", SqlDbType.NVarChar).Value = abi.client_ref;
                cmd.Parameters.Add("@confirm_date", SqlDbType.DateTime).Value = abi.confirm_date;
                cmd.Parameters.Add("@contract_id", SqlDbType.NVarChar).Value = abi.contract_id;
                cmd.Parameters.Add("@control", SqlDbType.NVarChar).Value = abi.control;
                cmd.Parameters.Add("@cur_amount", SqlDbType.Decimal).Value = abi.cur_amount;
                cmd.Parameters.Add("@currency", SqlDbType.NVarChar).Value = abi.currency;
                cmd.Parameters.Add("@del_met_descr", SqlDbType.NVarChar).Value = abi.del_met_descr;
                cmd.Parameters.Add("@del_term_descr", SqlDbType.NVarChar).Value = abi.del_term_descr;
                cmd.Parameters.Add("@deliv_addr", SqlDbType.NVarChar).Value = abi.deliv_addr;
                cmd.Parameters.Add("@deliv_attention", SqlDbType.NVarChar).Value = abi.deliv_attention;
                cmd.Parameters.Add("@deliv_countr", SqlDbType.NVarChar).Value = abi.deliv_countr;
                cmd.Parameters.Add("@deliv_date", SqlDbType.DateTime).Value = abi.deliv_date;
                cmd.Parameters.Add("@deliv_method", SqlDbType.NVarChar).Value = abi.deliv_method;
                cmd.Parameters.Add("@deliv_terms", SqlDbType.NVarChar).Value = abi.deliv_terms;
                cmd.Parameters.Add("@delivery_descr", SqlDbType.NVarChar).Value = abi.delivery_descr;
                cmd.Parameters.Add("@dim_1", SqlDbType.NVarChar).Value = abi.dim_1;
                cmd.Parameters.Add("@dim_2", SqlDbType.NVarChar).Value = abi.dim_2;
                cmd.Parameters.Add("@dim_3", SqlDbType.NVarChar).Value = abi.dim_3;
                cmd.Parameters.Add("@dim_4", SqlDbType.NVarChar).Value = abi.dim_4;
                cmd.Parameters.Add("@dim_5", SqlDbType.NVarChar).Value = abi.dim_5;
                cmd.Parameters.Add("@dim_6", SqlDbType.NVarChar).Value = abi.dim_6;
                cmd.Parameters.Add("@dim_7", SqlDbType.NVarChar).Value = abi.dim_7;
                cmd.Parameters.Add("@dim_value_1", SqlDbType.NVarChar).Value = abi.dim_value_1;
                cmd.Parameters.Add("@dim_value_2", SqlDbType.NVarChar).Value = abi.dim_value_2;
                cmd.Parameters.Add("@dim_value_3", SqlDbType.NVarChar).Value = abi.dim_value_3;
                cmd.Parameters.Add("@dim_value_4", SqlDbType.NVarChar).Value = abi.dim_value_4;
                cmd.Parameters.Add("@dim_value_5", SqlDbType.NVarChar).Value = abi.dim_value_5;
                cmd.Parameters.Add("@dim_value_6", SqlDbType.NVarChar).Value = abi.dim_value_6;
                cmd.Parameters.Add("@dim_value_7", SqlDbType.NVarChar).Value = abi.dim_value_7;
                cmd.Parameters.Add("@disc_percent", SqlDbType.Decimal).Value = abi.disc_percent;
                cmd.Parameters.Add("@discount", SqlDbType.Decimal).Value = abi.discount;
                cmd.Parameters.Add("@ean", SqlDbType.NVarChar).Value = abi.ean;
                cmd.Parameters.Add("@exch_rate", SqlDbType.Decimal).Value = abi.exch_rate;
                cmd.Parameters.Add("@ext_ord_ref", SqlDbType.NVarChar).Value = abi.ext_ord_ref;
                cmd.Parameters.Add("@ext_order_id", SqlDbType.NVarChar).Value = abi.ext_order_id;
                cmd.Parameters.Add("@intrule_id", SqlDbType.NVarChar).Value = abi.intrule_id;
                cmd.Parameters.Add("@line_no", SqlDbType.Int).Value = abi.line_no;
                cmd.Parameters.Add("@location", SqlDbType.NVarChar).Value = abi.location;
                cmd.Parameters.Add("@long_info1", SqlDbType.NVarChar).Value = abi.long_info1;
                cmd.Parameters.Add("@long_info2", SqlDbType.NVarChar).Value = abi.long_info2;
                cmd.Parameters.Add("@lot", SqlDbType.NVarChar).Value = abi.lot;
                cmd.Parameters.Add("@main_apar_id", SqlDbType.NVarChar).Value = abi.main_apar_id;
                cmd.Parameters.Add("@mark_attention", SqlDbType.NVarChar).Value = abi.mark_attention;
                cmd.Parameters.Add("@markings", SqlDbType.NVarChar).Value = abi.markings;
                cmd.Parameters.Add("@obs_date", SqlDbType.DateTime).Value = DateTime.Now;//abi.obs_date;
                cmd.Parameters.Add("@order_date", SqlDbType.DateTime).Value = abi.order_date;
                cmd.Parameters.Add("@order_id", SqlDbType.BigInt).Value = abi.order_id;
                cmd.Parameters.Add("@order_type", SqlDbType.NVarChar).Value = abi.order_type;
                cmd.Parameters.Add("@pay_method", SqlDbType.NVarChar).Value = abi.pay_method;
                cmd.Parameters.Add("@pay_temp_id", SqlDbType.NVarChar).Value = abi.pay_temp_id;
                cmd.Parameters.Add("@period", SqlDbType.Int).Value = abi.period;
                cmd.Parameters.Add("@place", SqlDbType.NVarChar).Value = abi.place;
                cmd.Parameters.Add("@province", SqlDbType.NVarChar).Value = abi.province;
                cmd.Parameters.Add("@rel_value", SqlDbType.NVarChar).Value = abi.rel_value;
                cmd.Parameters.Add("@rent_flag", SqlDbType.Int).Value = abi.rent_flag;
                cmd.Parameters.Add("@responsible", SqlDbType.NVarChar).Value = abi.responsible;
                cmd.Parameters.Add("@responsible2", SqlDbType.NVarChar).Value = abi.responsible2;
                cmd.Parameters.Add("@sequence_no", SqlDbType.Int).Value = abi.sequence_no;
                cmd.Parameters.Add("@sequence_ref", SqlDbType.Int).Value = abi.sequence_ref;
                cmd.Parameters.Add("@serial_no", SqlDbType.NVarChar).Value = abi.serial_no;
                cmd.Parameters.Add("@short_info", SqlDbType.NVarChar).Value = abi.short_info;
                cmd.Parameters.Add("@status", SqlDbType.NVarChar).Value = abi.status;
                cmd.Parameters.Add("@sup_article", SqlDbType.NVarChar).Value = abi.sup_article;
                cmd.Parameters.Add("@swift", SqlDbType.NVarChar).Value = abi.swift;
                cmd.Parameters.Add("@tax_code", SqlDbType.NVarChar).Value = abi.tax_code;
                cmd.Parameters.Add("@tax_system", SqlDbType.NVarChar).Value = abi.tax_system;
                cmd.Parameters.Add("@template_id", SqlDbType.Int).Value = abi.template_id;
                cmd.Parameters.Add("@terms_descr", SqlDbType.NVarChar).Value = abi.terms_descr;
                cmd.Parameters.Add("@terms_id", SqlDbType.NVarChar).Value = abi.terms_id;
                cmd.Parameters.Add("@text1", SqlDbType.NVarChar).Value = abi.text1;
                cmd.Parameters.Add("@text2", SqlDbType.NVarChar).Value = abi.text2;
                cmd.Parameters.Add("@text3", SqlDbType.NVarChar).Value = abi.text3;
                cmd.Parameters.Add("@text4", SqlDbType.NVarChar).Value = abi.text4;
                cmd.Parameters.Add("@trans_type", SqlDbType.NVarChar).Value = abi.trans_type;
                cmd.Parameters.Add("@unit_code", SqlDbType.NVarChar).Value = abi.unit_code;
                cmd.Parameters.Add("@unit_descr", SqlDbType.NVarChar).Value = abi.unit_descr;
                cmd.Parameters.Add("@unit_price", SqlDbType.Decimal).Value = abi.unit_price;
                cmd.Parameters.Add("@value_1", SqlDbType.Decimal).Value = abi.value_1;
                cmd.Parameters.Add("@vat_reg_no", SqlDbType.NVarChar).Value = abi.vat_reg_no;
                cmd.Parameters.Add("@voucher_ref", SqlDbType.Int).Value = abi.voucher_ref;
                cmd.Parameters.Add("@voucher_type", SqlDbType.NVarChar).Value = abi.voucher_type;
                cmd.Parameters.Add("@warehouse", SqlDbType.NVarChar).Value = abi.warehouse;
                cmd.Parameters.Add("@wf_state", SqlDbType.NVarChar).Value = abi.wf_state;
                cmd.Parameters.Add("@zip_code", SqlDbType.NVarChar).Value = abi.zip_code;
                cmd.Parameters.Add("@agrtid", SqlDbType.Int).Value = abi.agrtid;
                LogService.WriteLogExecuteSQLCommand(cmd);
                cmd.ExecuteNonQuery();
            }
            catch (Exception x)
            {
                LogService.WriteLogException(x);
                throw x;
            }
            finally
            {
                m_dataBaseConectivity.InterfaceSqlConnection.Close();
            }

        }
    }
}
